#include "Alumno.h"
#include "../funciones.h"

#include <iostream>

namespace Toolkit
{

Alumno::Alumno(const int &padron,const unsigned long int &DNI, const string &nombre,
			const TipoSerializacion &tSerializacion)
{
	this->padron = padron;
	this->DNI = DNI;
	this->nombre = nombre;
	this->tSerializacion = tSerializacion;
}

Alumno::~Alumno()
{
}

void Alumno::serializar(stringstream& stream) const
{
    stream.write(nombre.c_str(), nombre.size());
    agregarTamanoASerializacionComp(stream, tSerializacion);

    serializacionDigito(stream, tSerializacion, padron);
    serializacionDigito(stream, tSerializacion, DNI);
}

void Alumno::hidratar(stringstream& stream)
{

    int tamanoNombre;
    hidratacionDigito(stream, tSerializacion, tamanoNombre);

    char* buffer = new char[tamanoNombre];
    stream.read(buffer, tamanoNombre);
    nombre = string("").append(buffer, tamanoNombre);
    delete []buffer;

    hidratacionDigito(stream, tSerializacion, padron);
    hidratacionDigito(stream, tSerializacion, DNI);
}

Dato* Alumno::clonar() const
{
	return new Alumno(padron, DNI,nombre, tSerializacion);
}

string Alumno::getNombre() const
{
	return nombre;
}

int Alumno::getPadron() const
{
	return padron;
}

unsigned long int Alumno::getDNI() const{
	return DNI;
}

void Alumno::setNombre(const string &nombre){
	this->nombre = nombre;
}

void Alumno::setPadron(const int &padron){
	this->padron = padron;
}

void Alumno::setDNI(const unsigned long int &DNI){
	this->DNI = DNI;
}


}
